package chapter07.s01file.p04filedel;

import java.io.File;

/**
 * 递归的方式将整个目录以及其中的文件全部删除。
 *
 * 对于非空目录的删除
 * 1. 删除目录下所有的文件、目录
 * 2. 删除自身
 */
public class Example07 {
    public static void main(String[] args) {
        File file = new File("D:\\hello");
        deleteDir(file); // 调用deleteDir删除方法
    }

    public static void deleteDir(File dir) {
        if (dir.exists()) { // 判断传入的File对象是否存在
            File[] files = dir.listFiles(); // 得到File数组
            for (File file : files) { // 遍历所有的子目录和文件
                if (file.isDirectory()) {
                    deleteDir(file); // 如果是目录，递归调用deleteDir()
                } else {
                    // 如果是文件，直接删除
                    System.out.println("delete file: " + file.getAbsolutePath());
                    file.delete();
                }
            }
            // 删除完一个目录里的所有文件后，就删除这个目录
            System.out.println("delete dir: " + dir.getAbsolutePath());
            dir.delete();
        }
    }
}
